*,
::before,
::after {
    box-sizing: border-box;
    border-color: currentcolor;
    border-style: solid;
    border-width: 0;
}

#app {
    width: 100%;
    height: 100%;
}

html {
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    line-height: 1.5;
    tab-size: 4;
    text-size-adjust: 100%;
}

body {
    width: 100%;
    height: 100%;
    margin: 0;
    font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB",
        "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
    line-height: inherit;

    /*
        Note[css] font-smoothing 该特性尚未标准化, 解决了 macOS 上字体过粗的问题
        -moz-osx-font-smoothing: 仅适用于 macOS Firefox 浏览器
        -webkit-font-smoothing: 仅适用于 macOS WebKit 内核浏览器
        参考: https://developer.mozilla.org/zh-CN/docs/Web/CSS/font-smooth
    */
    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizelegibility;
}

hr {
    height: 0;
    color: inherit;
    border-top-width: 1px;
}

/*
    Note[html] abbr 表示一个缩写词或首字母缩略词
    https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/abbr

    Note[css] (试验性)attr表达式, 用来获取选择到的元素的某一 HTML 属性值，并用于其样式
    https://developer.mozilla.org/zh-CN/docs/Web/CSS/attr
*/
abbr:where([title]) {
    text-decoration: underline dotted;
}

a {
    color: inherit;
    text-decoration: inherit;
}

b,
strong {
    font-weight: bolder;
}

/*
    Note[html] code 表示计算机代码片段, 通常用于代码示例
    https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/code
    Note[samp] samp 表示计算机输出的内容, 通常用于程序输出
    https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/samp
    Note[html] pre 按照原文件中的编排，以等宽字体的形式展现出来
    https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/pre
    Note[kbd] kbd 表示用户输入的内容, 通常用于键盘输入
    https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/kbd
 */
code,
kbd,
samp,
pre {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
        "Liberation Mono", "Courier New", monospace;
    font-size: 1em;
}

small {
    font-size: 80%;
}

/*
    Note[html] sub 表示下标, 通常用于化学式或数学公式
    https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/sub
    Note[html] sup 表示上标, 通常用于数学公式或脚注
    https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/sup
*/
sub,
sup {
    position: relative;
    font-size: 75%;
    line-height: 0;
    vertical-align: baseline;
}

sub {
    bottom: -0.25em;
}

sup {
    top: -0.5em;
}

table {
    text-indent: 0;
    border-collapse: collapse;
    border-color: inherit;
}

button,
input,
optgroup,
select,
textarea {
    padding: 0;
    margin: 0;
    font-family: inherit;
    font-size: 100%;
    line-height: inherit;
    color: inherit;
}

button,
select {
    text-transform: none;
}

button,
[type="button"],
[type="reset"],
[type="submit"] {
    background-image: none;
}

:-moz-focusring {
    outline: auto;
}

:-moz-ui-invalid {
    box-shadow: none;
}

progress {
    vertical-align: baseline;
}

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
    height: auto;
}

[type="search"] {
    outline-offset: -2px;
}

::-webkit-file-upload-button {
    font: inherit;
}

summary {
    display: list-item;
}

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
    margin: 0;
}

fieldset {
    padding: 0;
    margin: 0;
}

legend {
    padding: 0;
}

ol,
ul,
menu {
    padding: 0;
    margin: 0;
    list-style: none;
}

textarea {
    resize: vertical;
}

input::placeholder,
textarea::placeholder {
    color: #9ca3af;
    opacity: 1;
}

button,
[role="button"] {
    cursor: pointer;
}

:disabled {
    cursor: default;
}

svg,
video,
canvas,
audio,
iframe,
embed,
object {
    display: block;
}

img,
video {
    max-width: 100%;
    height: auto;
}

[hidden] {
    display: none;
}

.dark {
    color-scheme: dark;
}

*,
*::before,
*::after {
    box-sizing: inherit;
}

a:focus,
a:active {
    outline: none;
}

a,
a:focus,
a:hover {
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}

div:focus {
    outline: none;
}

.clearfix {
    &::after {
        clear: both;
        display: block;
        visibility: hidden;
        height: 0;
        font-size: 0;
        content: " ";
    }
}